treeview: respect focus-padding when rendering focus
authorCosimo Cecchi <cosimoc@gnome.org>
Thu, 1 May 2014 16:07:25 +0000 (18:07 +0200)
committerCosimo Cecchi <cosimoc@gnome.org>
Thu, 1 May 2014 16:14:49 +0000 (18:14 +0200)
Adwaita had a hack to work this around, but now that we're moving focus
ring rendering into GTK, we can just fix the treeview instead.

gtk/gtktreeview.c

index 891a55cc7669818cb2532ea6f211f3e425c2e498..9893c191d9bb943576e09b8d61ddd830a2e4ed30 100644 (file)
@@ -5362,7 +5362,7 @@ gtk_tree_view_bin_draw (GtkWidget      *widget,
           tree_view->priv->draw_keyfocus &&
          gtk_widget_has_visible_focus (widget))
         {
-         gint tmp_y, tmp_height;
+         gint tmp_y, tmp_height, focus_pad;
          GtkStateFlags focus_rect_state = 0;
 
           gtk_style_context_save (context);
@@ -5381,10 +5381,14 @@ gtk_tree_view_bin_draw (GtkWidget      *widget,
               tmp_height = gtk_tree_view_get_row_height (tree_view, node);
            }
 
+          gtk_style_context_get_style (context,
+                                       "focus-padding", &focus_pad,
+                                       NULL);
+
           gtk_render_focus (context, cr,
-                            0, tmp_y,
-                            gdk_window_get_width (tree_view->priv->bin_window),
-                            tmp_height);
+                            focus_pad, tmp_y + focus_pad,
+                            gdk_window_get_width (tree_view->priv->bin_window) - 2 * focus_pad,
+                            tmp_height - 2 * focus_pad);
 
           gtk_style_context_restore (context);
         }